package controle;
import net.sf.jColtrane.annotations.methods.ContainAttribute;
import net.sf.jColtrane.annotations.methods.EndElement;
import net.sf.jColtrane.annotations.methods.InsideElement;
import net.sf.jColtrane.annotations.methods.StartElement;
import net.sf.jColtrane.handler.ContextVariables;
import net.sf.jColtrane.handler.SAXEvent;

import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class BuscaEventoXmltv extends DefaultHandler{

	String id_evento_xmltv;
	StringBuffer evento_xmltv_corrente = new StringBuffer().append("");
	StringBuffer evento_xmltv = new StringBuffer().append("");

	public BuscaEventoXmltv(String id_evento_xmltv) {
		this.id_evento_xmltv = id_evento_xmltv;
	}

	@StartElement
	@InsideElement(tag = "programme")
	public void inicioInsidePrograma(ContextVariables vars) {
		SAXEvent event = vars.getLastEvent();
		evento_xmltv_corrente.append("<");
		evento_xmltv_corrente.append(event.getTag());
		evento_xmltv_corrente.append(" ");
		for (String qName : event.getAtributesHolder().getQNames()) {
			evento_xmltv_corrente.append(qName);
			evento_xmltv_corrente.append("=\"");
			evento_xmltv_corrente.append(event.getAtributesHolder().getValue(qName));
			evento_xmltv_corrente.append("\" ");
		}
		evento_xmltv_corrente.append(">\n");

	}

	@EndElement
	@InsideElement(tag = "programme", attributes = { @ContainAttribute(name = "event_id") })
	public void fimInsidePrograma(ContextVariables vars) throws Throwable {
		SAXEvent event = vars.getLastEvent();
		// if (event.getAtributesHolder().getValue("event_id") != null) {
		if (!vars.getBody().equals("")){
			evento_xmltv_corrente.append(vars.getBody());
			evento_xmltv_corrente.append("\n");
		}
		evento_xmltv_corrente.append("</");
		evento_xmltv_corrente.append(event.getTag());
		evento_xmltv_corrente.append(">\n");
		if (event.getTag() == "programme") {
			String idEventoString = event.getAtributesHolder().getValue("event_id");
			if (idEventoString.equals(id_evento_xmltv)) {
				evento_xmltv.append(evento_xmltv_corrente);
			}
			evento_xmltv_corrente.setLength(0);
		}
	}
}
